A data processing system (DPS) may include hardware and software components. The software components may include one or more applications, an operating system (OS), and firmware. The applications may include control logic for performing the work that is of value to the user of the DPS. In such a DPS, the applications run on top of the OS, which runs at a lower logical level than the applications (i.e., closer to the hardware) to provide an underlying environment or abstraction layer which makes it easier to create and execute the applications. The firmware runs at an even lower logical level, to provide an underlying environment or abstraction layer which makes it easier to create and execute the OS. For instance, the firmware may establish a basic input/output system (BIOS), and the OS may use that BIOS to communicate with different hardware components within the DPS.
Typically, the OS and the applications execute out of random-access memory (RAM), which is volatile. Some or all of the firmware may also execute out of RAM. However, since the RAM is volatile, the environment for performing useful work basically disappears whenever the DPS is turned off. Consequently, whenever the DPS is turned on, the DPS must recreate that environment before useful work can be performed. For purposes of this disclosure, the operations for preparing a DPS to execute an OS may be referred to as the “boot process.” Similarly, the time that elapses during the boot process may be referred to as the “boot time.”